<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>vec - Perldoc Browser</title>
    <link rel="search" href="https://perldoc.perl.org/opensearch.xml" type="application/opensearchdescription+xml" title="Perldoc Browser">
    <link rel="canonical" href="https://perldoc.perl.org/functions/vec">
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css" integrity="sha384-JcKb8q3iqJ61gNV9KGb8thSsNjpSL0n8PARn9HuZOnIxN0hoP+VmmDGMN5t9UJ0Z" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/10.5.0/styles/stackoverflow-light.min.css" integrity="sha512-cG1IdFxqipi3gqLmksLtuk13C+hBa57a6zpWxMeoY3Q9O6ooFxq50DayCdm0QrDgZjMUn23z/0PMZlgft7Yp5Q==" crossorigin="anonymous" />
    <style>
      body {
        background: #f4f4f5;
        color: #020202;
      }
      .navbar-dark {
        background-image: -webkit-linear-gradient(top, #005f85 0, #002e49 100%);
        background-image: -o-linear-gradient(top, #005f85 0, #002e49 100%);
        background-image: linear-gradient(to bottom, #005f85 0, #002e49 100%);
        filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff005f85', endColorstr='#ff002e49', GradientType=0);
        background-repeat: repeat-x;
      }
      .navbar-dark .navbar-nav .nav-link,
      .navbar-dark .navbar-nav .nav-link:focus { color: #fff }
      .navbar-dark .navbar-nav .nav-link:hover { color: #ffef68 }
      #wrapperlicious {
        margin: 0 auto;
        font: 0.9em 'Helvetica Neue', Helvetica, sans-serif;
        font-weight: normal;
        line-height: 1.5em;
        margin: 0;
        padding: 0;
      }
      #wrapperlicious h1 { font-size: 1.5em }
      #wrapperlicious h2 { font-size: 1.3em }
      #wrapperlicious h3 { font-size: 1.1em }
      #wrapperlicious h4 { font-size: 0.9em }
      #wrapperlicious h1, #wrapperlicious h2, #wrapperlicious h3,
      #wrapperlicious h4, #wrapperlicious dt {
        color: #020202;
        margin-top: 1em;
        margin-bottom: 1em;
        position: relative;
        font-weight: bold;
      }
      #wrapperlicious a { color: inherit; text-decoration: underline }
      #wrapperlicious #toc { text-decoration: none }
      #wrapperlicious a:hover { color: #2a2a2a }
      #wrapperlicious a img { border: 0 }
      #wrapperlicious :not(pre) > code {
        color: inherit;
        background-color: rgba(0, 0, 0, 0.04);
        border-radius: 3px;
        font: 0.9em Consolas, Menlo, Monaco, monospace;
        padding: 0.3em;
      }
      #wrapperlicious dd {
        margin: 0;
        margin-left: 2em;
      }
      #wrapperlicious dt {
        color: #2a2a2a;
        font-weight: bold;
        margin-left: 0.9em;
      }
      #wrapperlicious p {
        margin-bottom: 1em;
        margin-top: 1em;
      }
      #wrapperlicious li > p {
        margin-bottom: 0;
        margin-top: 0;
      }
      #wrapperlicious pre {
        border: 1px solid #c1c1c1;
        border-radius: 3px;
        font: 100% Consolas, Menlo, Monaco, monospace;
        margin-bottom: 1em;
        margin-top: 1em;
      }
      #wrapperlicious pre > code {
        display: block;
        background-color: #f6f6f6;
        font: 0.9em Consolas, Menlo, Monaco, monospace;
        line-height: 1.5em;
        text-align: left;
        white-space: pre;
        padding: 1em;
      }
      #wrapperlicious dl, #wrapperlicious ol, #wrapperlicious ul {
        margin-bottom: 1em;
        margin-top: 1em;
      }
      #wrapperlicious ul {
        list-style-type: square;
      }
      #wrapperlicious ul ul {
        margin-bottom: 0px;
        margin-top: 0px;
      }
      #footer {
        font-size: 0.8em;
        padding-top: 0.5em;
        text-align: center;
      }
      #more {
        display: inline;
        font-size: 0.8em;
      }
      #perldocdiv {
        background-color: #fff;
        border: 1px solid #c1c1c1;
        border-bottom-left-radius: 5px;
        border-bottom-right-radius: 5px;
        margin-left: auto;
        margin-right: auto;
        padding: 3em;
        padding-top: 1em;
        max-width: 960px;
      }
      #moduleversion { float: right }
      #wrapperlicious .leading-notice {
        font-style: italic;
        padding-left: 1em;
        margin-top: 1em;
        margin-bottom: 1em;
      }
      #wrapperlicious .permalink {
        display: none;
        left: -0.75em;
        position: absolute;
        padding-right: 0.25em;
        text-decoration: none;
      }
      #wrapperlicious h1:hover .permalink, #wrapperlicious h2:hover .permalink,
      #wrapperlicious h3:hover .permalink, #wrapperlicious h4:hover .permalink,
      #wrapperlicious dt:hover .permalink {
        display: block;
      }
    </style>
    <!-- Global site tag (gtag.js) - Google Analytics -->
    <script async src="https://www.googletagmanager.com/gtag/js?id=G-KVNWBNT5FB"></script>
    <script>
      window.dataLayer = window.dataLayer || [];
      function gtag(){dataLayer.push(arguments);}
      gtag('js', new Date());

      gtag('config', 'G-KVNWBNT5FB');
      gtag('config', 'UA-50555-3');
    </script>
  </head>
  <body>
    <nav class="navbar navbar-expand-md navbar-dark bg-dark justify-content-between">
  <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
    <span class="navbar-toggler-icon"></span>
  </button>
  <a class="navbar-brand" href="https://perldoc.perl.org/">Perldoc Browser</a>
  <div class="collapse navbar-collapse" id="navbarNav">
    <ul class="navbar-nav mr-auto">
      <li class="nav-item dropdown text-nowrap">
        <a class="nav-link dropdown-toggle" href="vec.html#" id="dropdownlink-stable" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">5.35.0</a>
        <div class="dropdown-menu" aria-labelledby="dropdownlink-stable">
          <a class="dropdown-item" href="https://perldoc.perl.org/functions/vec">Latest</a>
          <div class="dropdown-divider"></div>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.38.2/functions/vec">5.38.2</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.38.1/functions/vec">5.38.1</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.38.0/functions/vec">5.38.0</a>
          <div class="dropdown-divider"></div>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.36.3/functions/vec">5.36.3</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.36.2/functions/vec">5.36.2</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.36.1/functions/vec">5.36.1</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.36.0/functions/vec">5.36.0</a>
          <div class="dropdown-divider"></div>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.34.3/functions/vec">5.34.3</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.34.2/functions/vec">5.34.2</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.34.1/functions/vec">5.34.1</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.34.0/functions/vec">5.34.0</a>
          <div class="dropdown-divider"></div>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.32.1/functions/vec">5.32.1</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.32.0/functions/vec">5.32.0</a>
          <div class="dropdown-divider"></div>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.30.3/functions/vec">5.30.3</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.30.2/functions/vec">5.30.2</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.30.1/functions/vec">5.30.1</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.30.0/functions/vec">5.30.0</a>
          <div class="dropdown-divider"></div>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.28.3/functions/vec">5.28.3</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.28.2/functions/vec">5.28.2</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.28.1/functions/vec">5.28.1</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.28.0/functions/vec">5.28.0</a>
          <div class="dropdown-divider"></div>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.26.3/functions/vec">5.26.3</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.26.2/functions/vec">5.26.2</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.26.1/functions/vec">5.26.1</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.26.0/functions/vec">5.26.0</a>
          <div class="dropdown-divider"></div>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.24.4/functions/vec">5.24.4</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.24.3/functions/vec">5.24.3</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.24.2/functions/vec">5.24.2</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.24.1/functions/vec">5.24.1</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.24.0/functions/vec">5.24.0</a>
          <div class="dropdown-divider"></div>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.22.4/functions/vec">5.22.4</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.22.3/functions/vec">5.22.3</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.22.2/functions/vec">5.22.2</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.22.1/functions/vec">5.22.1</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.22.0/functions/vec">5.22.0</a>
          <div class="dropdown-divider"></div>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.20.3/functions/vec">5.20.3</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.20.2/functions/vec">5.20.2</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.20.1/functions/vec">5.20.1</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.20.0/functions/vec">5.20.0</a>
          <div class="dropdown-divider"></div>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.18.4/functions/vec">5.18.4</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.18.3/functions/vec">5.18.3</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.18.2/functions/vec">5.18.2</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.18.1/functions/vec">5.18.1</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.18.0/functions/vec">5.18.0</a>
          <div class="dropdown-divider"></div>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.16.3/functions/vec">5.16.3</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.16.2/functions/vec">5.16.2</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.16.1/functions/vec">5.16.1</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.16.0/functions/vec">5.16.0</a>
          <div class="dropdown-divider"></div>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.14.4/functions/vec">5.14.4</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.14.3/functions/vec">5.14.3</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.14.2/functions/vec">5.14.2</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.14.1/functions/vec">5.14.1</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.14.0/functions/vec">5.14.0</a>
          <div class="dropdown-divider"></div>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.12.5/functions/vec">5.12.5</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.12.4/functions/vec">5.12.4</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.12.3/functions/vec">5.12.3</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.12.2/functions/vec">5.12.2</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.12.1/functions/vec">5.12.1</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.12.0/functions/vec">5.12.0</a>
          <div class="dropdown-divider"></div>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.10.1/functions/vec">5.10.1</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.10.0/functions/vec">5.10.0</a>
          <div class="dropdown-divider"></div>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.8.9/functions/vec">5.8.9</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.8.8/functions/vec">5.8.8</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.8.7/functions/vec">5.8.7</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.8.6/functions/vec">5.8.6</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.8.5/functions/vec">5.8.5</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.8.4/functions/vec">5.8.4</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.8.3/functions/vec">5.8.3</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.8.2/functions/vec">5.8.2</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.8.1/functions/vec">5.8.1</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.8.0/functions/vec">5.8.0</a>
          <div class="dropdown-divider"></div>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.6.2/functions/vec">5.6.2</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.6.1/functions/vec">5.6.1</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.6.0/functions/vec">5.6.0</a>
          <div class="dropdown-divider"></div>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.005_04/functions/vec">5.005_04</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.005_03/functions/vec">5.005_03</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.005_02/functions/vec">5.005_02</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.005_01/functions/vec">5.005_01</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.005/functions/vec">5.005</a>
        </div>
      </li>
      <li class="nav-item dropdown text-nowrap">
        <a class="nav-link dropdown-toggle" href="vec.html#" id="dropdownlink-dev" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Dev</a>
        <div class="dropdown-menu" aria-labelledby="dropdownlink-dev">
          <a class="dropdown-item" href="https://perldoc.perl.org/blead/functions/vec">blead</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.39.6/functions/vec">5.39.6</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.39.5/functions/vec">5.39.5</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.39.4/functions/vec">5.39.4</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.39.3/functions/vec">5.39.3</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.39.2/functions/vec">5.39.2</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.39.1/functions/vec">5.39.1</a>
          <div class="dropdown-divider"></div>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.38.0-RC2/functions/vec">5.38.0-RC2</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.38.0-RC1/functions/vec">5.38.0-RC1</a>
          <div class="dropdown-divider"></div>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.37.11/functions/vec">5.37.11</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.37.10/functions/vec">5.37.10</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.37.9/functions/vec">5.37.9</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.37.8/functions/vec">5.37.8</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.37.7/functions/vec">5.37.7</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.37.6/functions/vec">5.37.6</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.37.5/functions/vec">5.37.5</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.37.4/functions/vec">5.37.4</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.37.3/functions/vec">5.37.3</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.37.2/functions/vec">5.37.2</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.37.1/functions/vec">5.37.1</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.37.0/functions/vec">5.37.0</a>
          <div class="dropdown-divider"></div>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.35.11/functions/vec">5.35.11</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.35.10/functions/vec">5.35.10</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.35.9/functions/vec">5.35.9</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.35.8/functions/vec">5.35.8</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.35.7/functions/vec">5.35.7</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.35.6/functions/vec">5.35.6</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.35.5/functions/vec">5.35.5</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.35.4/functions/vec">5.35.4</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.35.3/functions/vec">5.35.3</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.35.2/functions/vec">5.35.2</a>
          <a class="dropdown-item" href="https://perldoc.perl.org/5.35.1/functions/vec">5.35.1</a>
          <a class="dropdown-item active" href="vec.html">5.35.0</a>
        </div>
      </li>
      <li class="nav-item dropdown text-nowrap">
        <a class="nav-link dropdown-toggle" href="vec.html#" id="dropdownlink-nav" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Documentation</a>
        <div class="dropdown-menu" aria-labelledby="dropdownlink-nav">
          <a class="dropdown-item" href="../perl.html">Perl</a>
          <a class="dropdown-item" href="../perlintro.html">Intro</a>
          <a class="dropdown-item" href="../perl.html#Tutorials">Tutorials</a>
          <a class="dropdown-item" href="../perlfaq.html">FAQs</a>
          <a class="dropdown-item" href="../perl.html#Reference-Manual">Reference</a>
          <div class="dropdown-divider"></div>
          <a class="dropdown-item" href="../perlop.html">Operators</a>
          <a class="dropdown-item" href="../functions.html">Functions</a>
          <a class="dropdown-item" href="../variables.html">Variables</a>
          <a class="dropdown-item" href="../modules.html">Modules</a>
          <a class="dropdown-item" href="../perlutil.html">Utilities</a>
          <div class="dropdown-divider"></div>
          <a class="dropdown-item" href="../perlcommunity.html">Community</a>
          <a class="dropdown-item" href="../perlhist.html">History</a>
        </div>
      </li>
    </ul>
    <ul class="navbar-nav">
      <script>
        function set_expand (expand) {
          var perldocdiv = document.getElementById('perldocdiv');
          var width = window.getComputedStyle(perldocdiv).getPropertyValue('max-width');
          var expanded = (width == '' || width == 'none') ? true : false;
          if (expand === null) {
            expand = !expanded;
          }
          if ((expand && !expanded) || (!expand && expanded)) {
            perldocdiv.style.setProperty('max-width', expand ? 'none' : '960px');
            var button_classlist = document.getElementById('content-expand-button').classList;
            if (expand) {
              button_classlist.add('btn-light');
              button_classlist.remove('btn-outline-light');
            } else {
              button_classlist.add('btn-outline-light');
              button_classlist.remove('btn-light');
            }
          }
          return expand;
        }
        function toggle_expand () {
          var expand = set_expand(null);
          document.cookie = 'perldoc_expand=' + (expand ? 1 : 0) + '; path=/; expires=Tue, 19 Jan 2038 03:14:07 UTC';
        }
        function read_expand () {
          return document.cookie.split(';').some(function (item) { return item.indexOf('perldoc_expand=1') >= 0 });
        }
        if (document.readyState === 'loading') {
          document.addEventListener('DOMContentLoaded', function () {
            if (read_expand()) {
              set_expand(true);
            }
          });
        } else if (read_expand()) {
          set_expand(true);
        }
      </script>
      <button id="content-expand-button" type="button" class="btn btn-outline-light d-none d-lg-inline-block mr-2" onclick="toggle_expand()">Expand</button>
    <ul>
    <form class="form-inline" method="get" action="https://perldoc.perl.org/5.35.0/search">
      <input class="form-control mr-3" type="search" name="q" placeholder="Search" aria-label="Search">
    </form>
  </div>
</nav>

    <div id="wrapperlicious" class="container-fluid">
      <div id="perldocdiv">
        <div id="links">
          <a href="../functions.html">functions</a>
            / <a href="vec.html">vec</a>
          <div id="more">
            (<a href="vec.txt">source</a>,
            <a href="CORE.html#vec-EXPR,OFFSET,BITS">CPAN</a>)
          </div>
        </div>
        <div class="leading-notice">
          You are viewing the version of this documentation from Perl 5.35.0.
            This is a development version of Perl.
        </div>
      <dl>

<dt id="vec-EXPR,OFFSET,BITS"><a class="permalink" href="vec.html#vec-EXPR,OFFSET,BITS">#</a><a id="vec"></a><a id="vec-EXPR-OFFSET-BITS"></a>vec EXPR,OFFSET,BITS   </dt>
<dd>

<p>Treats the string in EXPR as a bit vector made up of elements of width BITS and returns the value of the element specified by OFFSET as an unsigned integer. BITS therefore specifies the number of bits that are reserved for each element in the bit vector. This must be a power of two from 1 to 32 (or 64, if your platform supports that).</p>

<p>If BITS is 8, &quot;elements&quot; coincide with bytes of the input string.</p>

<p>If BITS is 16 or more, bytes of the input string are grouped into chunks of size BITS/8, and each group is converted to a number as with <a href="pack.html"><code>pack</code></a>/<a href="unpack.html"><code>unpack</code></a> with big-endian formats <code>n</code>/<code>N</code> (and analogously for BITS==64). See <a href="pack.html"><code>pack</code></a> for details.</p>

<p>If bits is 4 or less, the string is broken into bytes, then the bits of each byte are broken into 8/BITS groups. Bits of a byte are numbered in a little-endian-ish way, as in <code>0x01</code>, <code>0x02</code>, <code>0x04</code>, <code>0x08</code>, <code>0x10</code>, <code>0x20</code>, <code>0x40</code>, <code>0x80</code>. For example, breaking the single input byte <code>chr(0x36)</code> into two groups gives a list <code>(0x6, 0x3)</code>; breaking it into 4 groups gives <code>(0x2, 0x1, 0x3, 0x0)</code>.</p>

<p><a href="vec.html"><code>vec</code></a> may also be assigned to, in which case parentheses are needed to give the expression the correct precedence as in</p>

<pre><code>vec($image, $max_x * $x + $y, 8) = 3;</code></pre>

<p>If the selected element is outside the string, the value 0 is returned. If an element off the end of the string is written to, Perl will first extend the string with sufficiently many zero bytes. It is an error to try to write off the beginning of the string (i.e., negative OFFSET).</p>

<p>If the string happens to be encoded as UTF-8 internally (and thus has the UTF8 flag set), <a href="vec.html"><code>vec</code></a> tries to convert it to use a one-byte-per-character internal representation. However, if the string contains characters with values of 256 or higher, a fatal error will occur.</p>

<p>Strings created with <a href="vec.html"><code>vec</code></a> can also be manipulated with the logical operators <code>|</code>, <code>&amp;</code>, <code>^</code>, and <code>~</code>. These operators will assume a bit vector operation is desired when both operands are strings. See <a href="../perlop.html#Bitwise-String-Operators">&quot;Bitwise String Operators&quot; in perlop</a>.</p>

<p>The following code will build up an ASCII string saying <code>&#39;PerlPerlPerl&#39;</code>. The comments show the string after each step. Note that this code works in the same way on big-endian or little-endian machines.</p>

<pre><code>my $foo = &#39;&#39;;
vec($foo,  0, 32) = 0x5065726C; # &#39;Perl&#39;

# $foo eq &quot;Perl&quot; eq &quot;\x50\x65\x72\x6C&quot;, 32 bits
print vec($foo, 0, 8);  # prints 80 == 0x50 == ord(&#39;P&#39;)

vec($foo,  2, 16) = 0x5065; # &#39;PerlPe&#39;
vec($foo,  3, 16) = 0x726C; # &#39;PerlPerl&#39;
vec($foo,  8,  8) = 0x50;   # &#39;PerlPerlP&#39;
vec($foo,  9,  8) = 0x65;   # &#39;PerlPerlPe&#39;
vec($foo, 20,  4) = 2;      # &#39;PerlPerlPe&#39;   . &quot;\x02&quot;
vec($foo, 21,  4) = 7;      # &#39;PerlPerlPer&#39;
                               # &#39;r&#39; is &quot;\x72&quot;
vec($foo, 45,  2) = 3;      # &#39;PerlPerlPer&#39;  . &quot;\x0c&quot;
vec($foo, 93,  1) = 1;      # &#39;PerlPerlPer&#39;  . &quot;\x2c&quot;
vec($foo, 94,  1) = 1;      # &#39;PerlPerlPerl&#39;
                               # &#39;l&#39; is &quot;\x6c&quot;</code></pre>

<p>To transform a bit vector into a string or list of 0&#39;s and 1&#39;s, use these:</p>

<pre><code>my $bits = unpack(&quot;b*&quot;, $vector);
my @bits = split(//, unpack(&quot;b*&quot;, $vector));</code></pre>

<p>If you know the exact length in bits, it can be used in place of the <code>*</code>.</p>

<p>Here is an example to illustrate how the bits actually fall in place:</p>

<pre><code>#!/usr/bin/perl -wl

print &lt;&lt;&#39;EOT&#39;;
                                  0         1         2         3
                   unpack(&quot;V&quot;,$_) 01234567890123456789012345678901
------------------------------------------------------------------
EOT

for $w (0..3) {
    $width = 2**$w;
    for ($shift=0; $shift &lt; $width; ++$shift) {
        for ($off=0; $off &lt; 32/$width; ++$off) {
            $str = pack(&quot;B*&quot;, &quot;0&quot;x32);
            $bits = (1&lt;&lt;$shift);
            vec($str, $off, $width) = $bits;
            $res = unpack(&quot;b*&quot;,$str);
            $val = unpack(&quot;V&quot;, $str);
            write;
        }
    }
}

format STDOUT =
vec($_,@#,@#) = @&lt;&lt; == @######### @&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;
$off, $width, $bits, $val, $res
.
__END__</code></pre>

<p>Regardless of the machine architecture on which it runs, the example above should print the following table:</p>

<pre><code class="nohighlight">                                  0         1         2         3
                   unpack(&quot;V&quot;,$_) 01234567890123456789012345678901
------------------------------------------------------------------
vec($_, 0, 1) = 1   ==          1 10000000000000000000000000000000
vec($_, 1, 1) = 1   ==          2 01000000000000000000000000000000
vec($_, 2, 1) = 1   ==          4 00100000000000000000000000000000
vec($_, 3, 1) = 1   ==          8 00010000000000000000000000000000
vec($_, 4, 1) = 1   ==         16 00001000000000000000000000000000
vec($_, 5, 1) = 1   ==         32 00000100000000000000000000000000
vec($_, 6, 1) = 1   ==         64 00000010000000000000000000000000
vec($_, 7, 1) = 1   ==        128 00000001000000000000000000000000
vec($_, 8, 1) = 1   ==        256 00000000100000000000000000000000
vec($_, 9, 1) = 1   ==        512 00000000010000000000000000000000
vec($_,10, 1) = 1   ==       1024 00000000001000000000000000000000
vec($_,11, 1) = 1   ==       2048 00000000000100000000000000000000
vec($_,12, 1) = 1   ==       4096 00000000000010000000000000000000
vec($_,13, 1) = 1   ==       8192 00000000000001000000000000000000
vec($_,14, 1) = 1   ==      16384 00000000000000100000000000000000
vec($_,15, 1) = 1   ==      32768 00000000000000010000000000000000
vec($_,16, 1) = 1   ==      65536 00000000000000001000000000000000
vec($_,17, 1) = 1   ==     131072 00000000000000000100000000000000
vec($_,18, 1) = 1   ==     262144 00000000000000000010000000000000
vec($_,19, 1) = 1   ==     524288 00000000000000000001000000000000
vec($_,20, 1) = 1   ==    1048576 00000000000000000000100000000000
vec($_,21, 1) = 1   ==    2097152 00000000000000000000010000000000
vec($_,22, 1) = 1   ==    4194304 00000000000000000000001000000000
vec($_,23, 1) = 1   ==    8388608 00000000000000000000000100000000
vec($_,24, 1) = 1   ==   16777216 00000000000000000000000010000000
vec($_,25, 1) = 1   ==   33554432 00000000000000000000000001000000
vec($_,26, 1) = 1   ==   67108864 00000000000000000000000000100000
vec($_,27, 1) = 1   ==  134217728 00000000000000000000000000010000
vec($_,28, 1) = 1   ==  268435456 00000000000000000000000000001000
vec($_,29, 1) = 1   ==  536870912 00000000000000000000000000000100
vec($_,30, 1) = 1   == 1073741824 00000000000000000000000000000010
vec($_,31, 1) = 1   == 2147483648 00000000000000000000000000000001
vec($_, 0, 2) = 1   ==          1 10000000000000000000000000000000
vec($_, 1, 2) = 1   ==          4 00100000000000000000000000000000
vec($_, 2, 2) = 1   ==         16 00001000000000000000000000000000
vec($_, 3, 2) = 1   ==         64 00000010000000000000000000000000
vec($_, 4, 2) = 1   ==        256 00000000100000000000000000000000
vec($_, 5, 2) = 1   ==       1024 00000000001000000000000000000000
vec($_, 6, 2) = 1   ==       4096 00000000000010000000000000000000
vec($_, 7, 2) = 1   ==      16384 00000000000000100000000000000000
vec($_, 8, 2) = 1   ==      65536 00000000000000001000000000000000
vec($_, 9, 2) = 1   ==     262144 00000000000000000010000000000000
vec($_,10, 2) = 1   ==    1048576 00000000000000000000100000000000
vec($_,11, 2) = 1   ==    4194304 00000000000000000000001000000000
vec($_,12, 2) = 1   ==   16777216 00000000000000000000000010000000
vec($_,13, 2) = 1   ==   67108864 00000000000000000000000000100000
vec($_,14, 2) = 1   ==  268435456 00000000000000000000000000001000
vec($_,15, 2) = 1   == 1073741824 00000000000000000000000000000010
vec($_, 0, 2) = 2   ==          2 01000000000000000000000000000000
vec($_, 1, 2) = 2   ==          8 00010000000000000000000000000000
vec($_, 2, 2) = 2   ==         32 00000100000000000000000000000000
vec($_, 3, 2) = 2   ==        128 00000001000000000000000000000000
vec($_, 4, 2) = 2   ==        512 00000000010000000000000000000000
vec($_, 5, 2) = 2   ==       2048 00000000000100000000000000000000
vec($_, 6, 2) = 2   ==       8192 00000000000001000000000000000000
vec($_, 7, 2) = 2   ==      32768 00000000000000010000000000000000
vec($_, 8, 2) = 2   ==     131072 00000000000000000100000000000000
vec($_, 9, 2) = 2   ==     524288 00000000000000000001000000000000
vec($_,10, 2) = 2   ==    2097152 00000000000000000000010000000000
vec($_,11, 2) = 2   ==    8388608 00000000000000000000000100000000
vec($_,12, 2) = 2   ==   33554432 00000000000000000000000001000000
vec($_,13, 2) = 2   ==  134217728 00000000000000000000000000010000
vec($_,14, 2) = 2   ==  536870912 00000000000000000000000000000100
vec($_,15, 2) = 2   == 2147483648 00000000000000000000000000000001
vec($_, 0, 4) = 1   ==          1 10000000000000000000000000000000
vec($_, 1, 4) = 1   ==         16 00001000000000000000000000000000
vec($_, 2, 4) = 1   ==        256 00000000100000000000000000000000
vec($_, 3, 4) = 1   ==       4096 00000000000010000000000000000000
vec($_, 4, 4) = 1   ==      65536 00000000000000001000000000000000
vec($_, 5, 4) = 1   ==    1048576 00000000000000000000100000000000
vec($_, 6, 4) = 1   ==   16777216 00000000000000000000000010000000
vec($_, 7, 4) = 1   ==  268435456 00000000000000000000000000001000
vec($_, 0, 4) = 2   ==          2 01000000000000000000000000000000
vec($_, 1, 4) = 2   ==         32 00000100000000000000000000000000
vec($_, 2, 4) = 2   ==        512 00000000010000000000000000000000
vec($_, 3, 4) = 2   ==       8192 00000000000001000000000000000000
vec($_, 4, 4) = 2   ==     131072 00000000000000000100000000000000
vec($_, 5, 4) = 2   ==    2097152 00000000000000000000010000000000
vec($_, 6, 4) = 2   ==   33554432 00000000000000000000000001000000
vec($_, 7, 4) = 2   ==  536870912 00000000000000000000000000000100
vec($_, 0, 4) = 4   ==          4 00100000000000000000000000000000
vec($_, 1, 4) = 4   ==         64 00000010000000000000000000000000
vec($_, 2, 4) = 4   ==       1024 00000000001000000000000000000000
vec($_, 3, 4) = 4   ==      16384 00000000000000100000000000000000
vec($_, 4, 4) = 4   ==     262144 00000000000000000010000000000000
vec($_, 5, 4) = 4   ==    4194304 00000000000000000000001000000000
vec($_, 6, 4) = 4   ==   67108864 00000000000000000000000000100000
vec($_, 7, 4) = 4   == 1073741824 00000000000000000000000000000010
vec($_, 0, 4) = 8   ==          8 00010000000000000000000000000000
vec($_, 1, 4) = 8   ==        128 00000001000000000000000000000000
vec($_, 2, 4) = 8   ==       2048 00000000000100000000000000000000
vec($_, 3, 4) = 8   ==      32768 00000000000000010000000000000000
vec($_, 4, 4) = 8   ==     524288 00000000000000000001000000000000
vec($_, 5, 4) = 8   ==    8388608 00000000000000000000000100000000
vec($_, 6, 4) = 8   ==  134217728 00000000000000000000000000010000
vec($_, 7, 4) = 8   == 2147483648 00000000000000000000000000000001
vec($_, 0, 8) = 1   ==          1 10000000000000000000000000000000
vec($_, 1, 8) = 1   ==        256 00000000100000000000000000000000
vec($_, 2, 8) = 1   ==      65536 00000000000000001000000000000000
vec($_, 3, 8) = 1   ==   16777216 00000000000000000000000010000000
vec($_, 0, 8) = 2   ==          2 01000000000000000000000000000000
vec($_, 1, 8) = 2   ==        512 00000000010000000000000000000000
vec($_, 2, 8) = 2   ==     131072 00000000000000000100000000000000
vec($_, 3, 8) = 2   ==   33554432 00000000000000000000000001000000
vec($_, 0, 8) = 4   ==          4 00100000000000000000000000000000
vec($_, 1, 8) = 4   ==       1024 00000000001000000000000000000000
vec($_, 2, 8) = 4   ==     262144 00000000000000000010000000000000
vec($_, 3, 8) = 4   ==   67108864 00000000000000000000000000100000
vec($_, 0, 8) = 8   ==          8 00010000000000000000000000000000
vec($_, 1, 8) = 8   ==       2048 00000000000100000000000000000000
vec($_, 2, 8) = 8   ==     524288 00000000000000000001000000000000
vec($_, 3, 8) = 8   ==  134217728 00000000000000000000000000010000
vec($_, 0, 8) = 16  ==         16 00001000000000000000000000000000
vec($_, 1, 8) = 16  ==       4096 00000000000010000000000000000000
vec($_, 2, 8) = 16  ==    1048576 00000000000000000000100000000000
vec($_, 3, 8) = 16  ==  268435456 00000000000000000000000000001000
vec($_, 0, 8) = 32  ==         32 00000100000000000000000000000000
vec($_, 1, 8) = 32  ==       8192 00000000000001000000000000000000
vec($_, 2, 8) = 32  ==    2097152 00000000000000000000010000000000
vec($_, 3, 8) = 32  ==  536870912 00000000000000000000000000000100
vec($_, 0, 8) = 64  ==         64 00000010000000000000000000000000
vec($_, 1, 8) = 64  ==      16384 00000000000000100000000000000000
vec($_, 2, 8) = 64  ==    4194304 00000000000000000000001000000000
vec($_, 3, 8) = 64  == 1073741824 00000000000000000000000000000010
vec($_, 0, 8) = 128 ==        128 00000001000000000000000000000000
vec($_, 1, 8) = 128 ==      32768 00000000000000010000000000000000
vec($_, 2, 8) = 128 ==    8388608 00000000000000000000000100000000
vec($_, 3, 8) = 128 == 2147483648 00000000000000000000000000000001</code></pre>

</dd>
</dl>


      </div>
      <div id="footer">
        <p>Perldoc Browser is maintained by Dan Book (<a href="https://metacpan.org/author/DBOOK">DBOOK</a>). Please contact him via the <a href="https://github.com/Grinnz/perldoc-browser/issues">GitHub issue tracker</a> or <a href="mailto:dbook@cpan.org">email</a> regarding any issues with the site itself, search, or rendering of documentation.</p>

<p>The Perl documentation is maintained by the Perl 5 Porters in the development of Perl. Please contact them via the <a href="https://github.com/Perl/perl5/issues">Perl issue tracker</a>, the <a href="https://lists.perl.org/list/perl5-porters.html">mailing list</a>, or <a href="https://kiwiirc.com/client/irc.perl.org/p5p">IRC</a> to report any issues with the contents or format of the documentation.</p>


      </div>
    </div>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.slim.min.js" integrity="sha512-/DXTXr6nQodMUiq+IUJYCt2PPOUjrHJ9wFrqpJ3XkgPNOZVfMok7cRw6CSxyCQxXn6ozlESsSh1/sMCTF1rL/g==" crossorigin="anonymous"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.1/umd/popper.min.js" integrity="sha512-ubuT8Z88WxezgSqf3RLuNi5lmjstiJcyezx34yIU2gAHonIi27Na7atqzUZCOoY4CExaoFumzOsFQ2Ch+I/HCw==" crossorigin="anonymous"></script>
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js" integrity="sha384-B4gt1jrGC7Jh4AgTPSdUtOBvfO8shuf57BaghqFfPlYxofvL8/KUEfYiJOMMV+rV" crossorigin="anonymous"></script>
    <script src="../../highlight.pack.js"></script>
    <script>hljs.highlightAll();</script>
  </body>
</html>
